Embodiments generally relate to signal processing. More particularly, embodiments relate to enqueuing a command buffer including a command associated with a request to process video content via a user mode driver (UMD) to receive a further request to process further video content independent of an execution of the command by platform hardware, to dequeuing the command buffer via a process (e.g., thread), and/or to submitting the command buffer to the platform hardware via a kernel mode driver (KMD) independent of the user mode driver.
In computer applications, such as in video streaming applications, throughput is an important performance indicator that may be measured in maximum frame processing rate (e.g., in frames per second (FPS)). Driver models employed to process video content may include a user mode driver (UMD) and a kernel mode driver (KMD). For example, the UMD may receive a request to process a video frame from an upper level component, locate hardware commands and a command buffer, and make a direct system call to the KMD to submit the command buffer to platform hardware to process the video frame. The UMD waits, and does not return to the upper level component to receive further requests, until the platform hardware finishes execution. Accordingly, the dependence of the UMD on the KMD and/or on the platform hardware execution may be a performance block for throughput (e.g., FPS), for example when the bit rate is relatively high (e.g., above approximately 30 Mbps) and may lead to unnecessary waste of resources, such processor utilization, power utilization, and/or may negatively impact user experience.